<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib  prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib  prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib  prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="redis" uri="http://www.shopjsp.com/redisTag/functions" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<c:set var="srcPath" value="${redis:getSysConfig('sysFileVisitRoot_back')}"/>
<c:set var="basePath" value="${redis:getSysConfig('base_path_back')}"/>
<script type="text/javascript">
    /**
     * 自定义验证规则
     */
    function validateForm_function(){
        $("#form_function").bootstrapValidator({
            message: "无效的值",
            feedbackIcons: {
                valid: "glyphicon glyphicon-ok",
                invalid: "glyphicon glyphicon-remove",
                validating: "glyphicon glyphicon-refresh"
            },
            fields: {
                funName: {
                    validators: {
                        notEmpty: {message: "功能权限名称不可为空"},
                        stringLength: {min: 2,max: 30,message: "功能权限名称长度为2至30"}
                    }
                },
                funValue: {
                    validators: {
                        notEmpty: {message: "功能权限值不可为空"},
                        stringLength: {min: 2,max: 30,message: "功能权限值长度为2至30"}
                    }
                }
            }
        });
    }

    /**
     * 编辑功能权限信息
     */
    function editInfo2(){
        /**获取选中行的id**/
        var selectedRow= $("#tt_functoinsList").bootstrapTable('getSelections');
        if(selectedRow.length==1){
            var id=selectedRow[0].fid;
            $("#btn_edit2").attr("data-target","#form_function");/**选中了记录后才可打开对应的功能信息**/
            $.ajax({
                type: "POST",
                dataType: "JSON",
                url: "${basePath}/back/purview/getFunctionsObject.sjson",
                data: {fid:id},
                success: function(result){
                    var data = JSON.parse(result.data);
                    /**隐藏域**/
                    $("#fid").val(data.fid);
                    $("#function_purviewId").val(data.purviewId);
                    /**可见表单控件**/
                    $("#funName").val(data.funName);
                    $("#funValue").val(data.funValue);
                }
            });
        }else{
            $("#btn_edit2").attr("data-target","");/**没有选中记录不可打开功能信息**/
            showMsg("请选择一行记录！");
        }
    }

    /**
     * 表单提交及验证初始化
     */
    $(document).ready(function() {
        if($("#form_function").length>0){ /**判断当前页面是否有填写表单并检验**/
        	validateForm_function();
            /**Modal验证销毁重构**/
            $('#addOrEditFunctionsModal').on('hidden.bs.modal', function() {
                reValidateForm_function();
            });
        }
    });

    /**
     * 重置表单验证
     */
    function reValidateForm_function(){
        $("#form_function").data('bootstrapValidator', null);
        validateForm_function();
    }

    /**
     * 表单异步提交
     */
    var isValid;
    function submitForm_function(){
        /** 开启验证**/
        $("#form_function").data('bootstrapValidator').validate();
        isValid=$("#form_function").data('bootstrapValidator').isValid();
        if(isValid){  /** 验证通过后提交表单**/
       	 	var options = {
                url: $("#form_function").attr("action"),
                type : "post",
                dataType:"json",
                success : function(data) {
                    if(data.success==true){
                        /** 先重置查询框的值**/
                        $("#qform_function")[0].reset();
                        /** 重新刷新列表数据**/
                        $("#tt_functoinsList").bootstrapTable('refresh');
                        showMsg("保存成功！");
                        /** 重置添加表单**/
                        $("#form_function")[0].reset();
                        /** 清除表单验证，重新加载验证**/
                        $("#form_function").data('bootstrapValidator').destroy();
                        $("#form_function").data('bootstrapValidator', null);
                        validateForm_function();
                    }else{
                        showMsg("保存失败！");
                    }
                }
            };
            $("#form_function").ajaxSubmit(options);
        }else{ /** 验证失败了直接返回 **/

        }
    }

    /**
     * 维护功能权限
     */
	<shiro:hasPermission name="back_gotoPurviewPage_maintainFunction">
    function editFunctionPurview(){
        var selectedRow= $("#tt").bootstrapTable('getSelections');
        if(selectedRow.length==1){
            var isLeaf=selectedRow[0].isLeaf;
            if(isLeaf==1){
                $("#myModalLabel2").empty().text("维护功能权限");
                $("#btn_edit_function").attr("data-target","#addOrEditFunctionsModal");/**选中了记录后才可打开对应的模态框**/
                /** 重置当前未选中的列表中的查询条件**/
                $("#form_function")[0].reset();
                $("#qform_function")[0].reset();
                $("#function_purviewId").val(selectedRow[0].purviewId);
                $("#tt_functoinsList").bootstrapTable("refresh");
            }else{
                showMsg("当前节点不是叶节点，不可添加功能权限！");
            }
        }else{
            $("#btn_edit_function").attr("data-target","");/**没有选中记录不可打开模态框**/
            showMsg("请选择一行记录！");
        }
    }
	</shiro:hasPermission>

    $(function () {
        var $tt_functoinsList= $("#tt_functoinsList").bootstrapTable({
            url: '${basePath}/back/purview/listFunctions.sjson? ',        	/**请求后台的URL（*）**/
            method: 'post',                       	/**请求方式（*）**/
            contentType: "application/x-www-form-urlencoded",
            dataType: 'json',
            toolbar: '#toolbar2',               	/**工具按钮用哪个容器**/
            striped: true,                      	/**是否显示行间隔色**/
            cache: false,                       	/**是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）**/
            pagination: true,                   	/**是否显示分页（*）**/
            sortable: false,                    	/**是否启用排序**/
            sortOrder: 'asc',                   	/**排序方式**/
            queryParamsType: '',
            sidePagination: 'server',           	/**分页方式：client客户端分页，server服务端分页（*）**/
            pageNumber: 1,
            pageSize:10,							/**初始化加载第一页，默认第一页**/
            pageList: [5,10, 25, 50],        	    /**可供选择的每页的行数（*）**/
            search: false,                       	/**是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大**/
            strictSearch: true,
            showColumns: true,                  	/**是否显示所有的列**/
            showRefresh: true,                  	/**是否显示刷新按钮**/
            minimumCountColumns: 2,             	/**最少允许的列数**/
            clickToSelect: true,                	/**是否启用点击选中行**/
            uniqueId: 'fid',                  		/**每一行的唯一标识，一般为主键列**/
            singleSelect  : true,                   /** 单选checkbox**/
            showToggle:false,                    	/**是否显示详细视图和列表视图的切换按钮**/
            cardView: false,                    	/**是否显示详细视图**/
            detailView: false,                  	/**是否显示父子表**/
            columns: [
                {checkbox: true},
                {field: 'Number', title: '编号',align: 'center',valign: 'middle',width:'50px',
                    formatter: function (value, row, index) {
                        var page = $tt_functoinsList.bootstrapTable("getPage");
                        return page.pageSize * (page.pageNumber - 1) + index + 1;
                    }
                },
                {field: 'purviewName',title: '菜单权限名称',align: 'center',valign: 'middle'},
                {field: 'funName',title: '功能权限名称',align: 'center',valign: 'middle'},
                {field: 'funValue',title: '功能权限值',align: 'center',valign: 'middle'}
            ],
            queryParams: function (params) {
                /**特别说明，返回的参数的值为空，则当前参数不会发送到服务器端,这种指定请求参数的方式和datatables控价类似**/
                params.funName = $("#q_funName").val();
                params.purviewId =$("#function_purviewId").val();
                params.currentPage = params.pageNumber;
                return params;
            }
        });
        /**表单查询**/
        $("#btn_query_function").click(function () {
            $("#tt_functoinsList").bootstrapTable('refresh');
        });
    });

    /**
     * 删除功能权限信息
     */
    function deleteInfo2(){
        /**获取选中行的id**/
        var selectedRow= $("#tt_functoinsList").bootstrapTable('getSelections');
        if(selectedRow.length==1){
            var id=selectedRow[0].fid;
            showConfirm("你确定要删除吗?", function() {
                $.ajax({
                    type: "POST",
                    dataType: "JSON",
                    url: "${basePath}/back/purview/deleteFunctions.sjson",
                    data: {fid:id},
                    success: function(data){
                        if(data.success==true){
                            /**重新刷新列表数据**/
                            $("#tt_functoinsList").bootstrapTable('refresh');
                        }
                    }
                });
            });
        }else{
            showMsg("请选择一行记录！");
        }
    }
</script>

<!--编辑模态框（Modal） -->
<div class="modal fade" id="addOrEditFunctionsModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2" aria-hidden="true" data-backdrop="static">
	<div class="modal-dialog" style="width:70%">
		<div class="modal-content">
			<div class="modal-header">
				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
				<h5 class="modal-title" id="myModalLabel2"></h5>
			</div>

			<div class="modal-body" style="padding-top: 5px;">
				<!-- 查询条件 -->
				<div class="panel panel-default" style="margin-top: 15px;">
					<div class="panel-body">
						<form id="qform_function" class="form-horizontal">
							<div class="form-group" style="margin-top:15px">
								<div class="col-sm-4" >
									<div class="input-group input-group-sm">
										<span class="input-group-addon">功能权限名称</span>
										<input type="text" class="form-control" id="q_funName" name="funName" placeholder="请输入功能权限名称"/>
									</div>
								</div>
								<div class="col-sm-2" style="width:160px;">
									<button type="button" id="btn_query_function" class="btn btn-primary">查询</button>&nbsp;&nbsp;
									<button type="reset" class="btn btn-success" id="resetBtn" >重置</button>
								</div>
							</div>
						</form>
					</div>
				</div>

				<!-- 工具栏 -->
				<div id="toolbar2" class="btn-group">
					<button id="btn_edit2" type="button" class="btn btn-default" onclick="editInfo2()">
						<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改
					</button>
					<button id="btn_delete2" type="button" class="btn btn-default" data-toggle="form" onclick="deleteInfo2()">
						<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>删除
					</button>
				</div>

				<form id="form_functoinsList"  method="post" action="">
					<!-- 渲染的table -->
					<table id="tt_functoinsList"></table>
				</form>

				<form id="form_function" style="margin-top: 15px;" method="post" action="${basePath}/back/purview/saveOrUpdateFunctions.sjson">
					<input id="fid" type="hidden" name="fid" value=""/>
					<input id="function_purviewId" type="hidden" name="purviewId" value=""/>
					<table align="center" class="addOrEditTable table-bordered table" >
						<tr>
							<td class="toright_td" width="150px"><span style="color:red">* </span>功能权限名称:&nbsp;&nbsp;</td>
							<td  class="toleft_td">
								<div class="form-group">
									<input type="text" class="form-control input-sm" id="funName" name="funName" placeholder="请输入功能权限名称"/>
								</div>
							</td>
						</tr>
						<tr>
							<td class="toright_td" width="150px"><span style="color:red">* </span>功能权限值:&nbsp;&nbsp;</td>
							<td  class="toleft_td">
								<div class="form-group">
									<input type="text" class="form-control input-sm" id="funValue" name="funValue" placeholder="请输入功能权限值"/>
								</div>
							</td>
						</tr>
					</table>
				</form>
			</div>

			<div class="modal-footer">
				<button id="validateBtn" type="button" class="btn btn-primary" onclick="submitForm_function()">保存</button>
				<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
			</div>
		</div><!-- /.modal-content -->
	</div><!-- /.modal -->
</div>
